/*
    判断文件是否存在
    author：lf
*/
#pragma once

#include <fstream>
#include <stdio.h>
// #include <unistd.h> // linux
#include <sys/stat.h>


inline bool Exists_fstream(const char* fileName)
{
    std::ifstream ifs(fileName, std::ios::binary);
    return ifs.good();
}

inline bool Exists_fopen(const char* fileName)
{
    if(FILE* fp = fopen(fileName, "rb"))
    {
        fclose(fp);
        return true;
    }
    return false;
}

/*
适用于 linux
access(const char* file, int mode)
mode	Description
F_OK	测试文件是否存在
R_OK	测试文件是否有读权限
W_OK	测试文件是否有写权限
X_OK	测试文件是否有执行权限
返回0，表示存在，返回-1表示不存在。
*/
// bool Exists2(const char* fileName)
// {
//     return access(fileName, F_OK) == 0;
// }


inline bool Exists_stat(const char* fileName)
{
    struct stat buffer;
    return stat(fileName, &buffer) == 0;
}